import axios from 'axios'
import {
  Message,
  MessageBox,
  Notification
} from 'element-ui'

axios.defaults.withCredentials = true

const service = axios.create({
  baseURL: `http://${process.env.API_URL || 'localhost'}:${process.env.API_PORT || 500}`,
  timeout: 1500000,
  headers: {}
});

// request interceptor
service.interceptors.request.use(config => {
  // Do something before request is sent
  if (config.url == undefined) {
    Notification({
      title: '警告',
      message: '请求路径错误，请检查！',
      type: 'warning',
      offset: 100,
      duration: 2000
    });
    return false
  }
  // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
  return config
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})

// respone interceptor
service.interceptors.response.use(
  // response => response,
  /**
   * 下面的注释为通过在response里，自定义code来标示请求状态
   * 当code返回如下情况则说明权限有问题，登出并返回到登录页
   * 如想通过xmlhttprequest来状态码标识 逻辑可写在下面error中
   * 以下代码均为样例，请结合自生需求加以修改，若不需要，则可删除
   */
  response => {
    if ((response)) {
      if (response.data.error_code == 200) {
        Message.success(response.data.msg)
        return response
      } else if (response.data.error_code == 500) {
        Message.error("系统内部出错啦")
        return Promise.reject('error')
      } else if (response.data.error_code == 400) {
        Message.error(response.data.msg)
        return Promise.reject('error')
      } else {
        Message.error("有问题")
        return Promise.reject('error')
      }
    }
  },

  /**
   *	错误回调
   *	*/
  // error => {
  //   console.error('err:' + error) // for debug
  //   if (error.request.status == '401') {
  //     Message.warning('登录过期，请重新登录！')
  //     delToken()
  //   } else if (error.request.status == '404') {
  //     Message({
  //       message: '错误的请求！',
  //       type: 'error',
  //       duration: 5 * 1000
  //     })
  //   } else if (error.request.status == '500') {
  //     Message({
  //       message: '服务器异常！',
  //       type: 'error',
  //       duration: 5 * 1000
  //     })
  //   } else {
  //     Message({
  //       message: '请求失败,请检查您的输入',
  //       type: 'error',
  //       duration: 5 * 1000
  //     })
  //     //router.push({ path: '/404' })
  //     return Promise.reject(error)
  //   }
  // }
)

export default service
